package com.ssm.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;


public final class DateUtil {
    private DateUtil() {
    }

    /** 日期格式 **/
    public interface DATE_PATTERN {
        String HHMMSS = "HHmmss";
        String HH_MM_SS = "HH:mm:ss";
        String YYYYMMDD = "yyyyMMdd";
        String YYYY_MM_DD = "yyyy-MM-dd";
        String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
        String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
    }

    /**
     * 将Date类型转换成String类型
     * 
     * @param date
     * Date对象
     * @return 形如:"yyyy-MM-dd HH:mm:ss"
     */
    public static String date2String(Date date) {
        return date2String(date, DATE_PATTERN.YYYY_MM_DD_HH_MM_SS);
    }

    /**
     * 将Date按格式转化成String
     * 
     * @param date
     * Date对象
     * @param pattern
     * 日期类型
     * @return String
     */
    public static String date2String(Date date, String pattern) {
        if (date == null || pattern == null) {
            return null;
        }
        return new SimpleDateFormat(pattern).format(date);
    }

    /**
     * 将String类型转换成Date类型
     * 
     * @param date
     * Date对象
     * @return
     */
    public static Date string2Date(String date) {
        SimpleDateFormat format = new SimpleDateFormat(DATE_PATTERN.YYYY_MM_DD_HH_MM_SS);
        try {
            return format.parse(date);
        } catch (ParseException e) {
            return null;
        }
    }

    /**
     * 将String类型转换成Date类型
     * 
     * @param date
     * Date对象
     * @param pattern
     * 日期类型
     * @return String 返回类型
     * @author 
     * @date 
     */
    public static Date string2Date(String date, String pattern) {
        if (date == null || pattern == null) {
            return null;
        }
        try {
            return new SimpleDateFormat(pattern).parse(date);
        } catch (ParseException e) {
            return null;
        }
    }
    /** 
     * 由过去的某一时间,计算距离当前的时间 
     * */  
    public static String CalculateTime(String time){  
        long nowTime=System.currentTimeMillis();  //获取当前时间的毫秒数  
        String msg = null;  
          
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//指定时间格式  
         Date setTime = null;  //指定时间  
        try {  
            setTime = sdf.parse(time);  //将字符串转换为指定的时间格式  
        } catch (ParseException e) {  
              
            e.printStackTrace();  
        }  
          
        long reset=setTime.getTime();   //获取指定时间的毫秒数  
        long dateDiff=nowTime-reset;  
          
        if(dateDiff<0){  
            msg="输入的时间不对";  
        }else{  
          
        long dateTemp1=dateDiff/1000; //秒  
        long dateTemp2=dateTemp1/60; //分钟  
        long dateTemp3=dateTemp2/60; //小时  
        long dateTemp4=dateTemp3/24; //天数  
        long dateTemp5=dateTemp4/30; //月数  
        long dateTemp6=dateTemp5/12; //年数  
          
        if(dateTemp6>0){  
            msg = dateTemp6+"年前";  
              
        }else if(dateTemp5>0){  
            msg = dateTemp5+"个月前";  
              
        }else if(dateTemp4>0){  
            msg = dateTemp4+"天前";  
              
        }else if(dateTemp3>0){  
            msg = dateTemp3+"小时前";  
              
        }else if(dateTemp2>0){  
            msg = dateTemp2+"分钟前";  
              
        }else if(dateTemp1>0){  
            msg = "刚刚";  
              
        }     
    }  
        return msg;  
          
    }  
}
